﻿using System;
using System.Data;

namespace msBsc.WebUi
{
    public partial class wfDrawPartake : msBsc.Cls.BPageHt
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindControls();
                txtPId.Value = this.GetFormParam("PID");
                //System.Random rd = new Random();
                //sRadom.Value = this.GetRadomString();
            }
        }

        private void BindControls()
        {
            if (!IsPostBack)
            {
            }
        }
        //重构基类的回调处理函数，以strAction属性来判断是什么类型的回调，该变量的值对应前台的ACTION参数，如：按钮的名称等
        public override void InitialByParam()
        {
            if (this.gtGridRet != null)
            {
                if (this.gtGridRet.action == "load" || this.gtGridRet.action == "export")//处理GRID的数据原获取和数据导出
                {
                    DataSet ds = GetDisplayData(this.GetParamHtValue("gtGridID"), this.strAction, this.sCurrPageRadom);
                    if (ds != null && ds.Tables.Count > 0)
                        SetReturnDatatable(ds.Tables[0], "DRAW_PARTAKE_ID");//CONSTANT_CATEGORY_ID为表的KEY字段，可填可不填
                }
                //处理数据保存
                if (this.gtGridRet.action == "save" && (gtGridRet.insertedRecords.Length > 0 || gtGridRet.updatedRecords.Length > 0 || gtGridRet.deletedRecords.Length > 0))
                {
                    DataSet ds = GetDisplayData(this.GetParamHtValue("gtGridID"), this.strAction, this.sCurrPageRadom);
                    try
                    {
                        if (ds != null && ds.Tables.Count > 0)
                        {
                            ////处理记录新增，前台已传入新增的ROW
                            //for (int i = 0; i < gtGridRet.insertedRecords.Length; i++)
                            //{
                            //    DataRow drNew = ds.Tables[0].NewRow();
                            //    msBsc.AppLogic.Cfg.HttpTools.CopyHashToDataRow(gtGridRet.insertedRecords[i], drNew);
                            //    drNew["DRAW_PARTAKE_ID"] = (new Epm.AppLogic.Framework.CDbAccess()).NewID();
                            //    ds.Tables[0].Rows.Add(drNew);
                            //}

                            ////处理记录更新，前台已传入更新的ROW
                            //for (int i = 0; i < gtGridRet.updatedRecords.Length; i++)
                            //{
                            //    string stridtm = gtGridRet.updatedRecords[i]["DRAW_PARTAKE_ID"].ToString();
                            //    if (stridtm != string.Empty)
                            //    {
                            //        DataRow[] arrtemr = ds.Tables[0].Select("DRAW_PARTAKE_ID='" + stridtm + "'");
                            //        if (arrtemr.Length > 0)
                            //        {
                            //            msBsc.AppLogic.Cfg.HttpTools.CopyHashToDataRow(gtGridRet.updatedRecords[i], arrtemr[0]);
                            //        }
                            //    }
                            //}

                            ////处理记录删除，前台已传入删除的ROW
                            //for (int i = 0; i < gtGridRet.deletedRecords.Length; i++)
                            //{
                            //    string stridtm = gtGridRet.deletedRecords[i]["DRAW_PARTAKE_ID"].ToString();
                            //    if (stridtm != string.Empty)
                            //    {
                            //        DataRow[] arrtemr = ds.Tables[0].Select("DRAW_PARTAKE_ID='" + stridtm + "'");
                            //        if (arrtemr.Length > 0)
                            //        {
                            //            arrtemr[0].Delete();
                            //        }
                            //    }
                            //}
                            if (ds.HasChanges())
                            {
                                System.Transactions.TransactionOptions transactionOption = new System.Transactions.TransactionOptions();
                                transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
                                transactionOption.Timeout = new TimeSpan(0, 10, 0);
                                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, transactionOption))
                                {

                                    using (msBsc.AppLogic.DataAlc.CBizShpDrawPartake objtem1 = new msBsc.AppLogic.DataAlc.CBizShpDrawPartake())
                                    {
                                        objtem1.Update(ds);
                                    }



                                    //objBseDataSyn.Update(ds, "PROJECT_NME,CLASS_NME,TO_SERVER_NME", false);
                                    ds.AcceptChanges();

                                    ts.Complete();
                                    ts.Dispose();

                                    //using (Epm.AppLogic.Framework.CDbAccess oCDbAccess = new Epm.AppLogic.Framework.CDbAccess())
                                    //{
                                    //    string strmtem111 = msBsc.AppLogic.Cfg.SystemFileDir.FileDir.UrlBase;
                                    //    System.Web.Routing.RouteTable.Routes.Clear();
                                    //    System.Data.DataSet ds2 = oCDbAccess.QueryBySQL("SELECT DRAW_PARTAKE_ID,LEVEL_ONE_NME,SHOW_PAGE_URL FROM SHP_GOODS_BRAND");
                                    //    for (int i = ds2.Tables[0].Rows.Count - 1; i >= 0; i--)
                                    //    {
                                    //        System.Web.Routing.RouteTable.Routes.Add("myRoute" + i.ToString(), new System.Web.Routing.Route(ds2.Tables[0].Rows[i]["SHOW_PAGE_URL"].ToString(), new System.Web.Routing.PageRouteHandler("~" + strmtem111 + (ds2.Tables[0].Rows[i]["OLD_URL"].ToString().StartsWith("/") ? ds2.Tables[0].Rows[i]["OLD_URL"].ToString().Substring(1) : ds2.Tables[0].Rows[i]["OLD_URL"].ToString()))));
                                    //    }
                                    //} 
                                }
                            }
                        }
                    }
                    catch (Exception err)
                    {
                        ds.RejectChanges();
                        gtGridRetSaveException = err.Message;
                    }
                }
                if (gtGridRetSaveSuccess && (this.gtGridRet.action == "save" || strAction == "btnSave"))//根据传入的回调类型进行处理，这里响应编辑按钮
                {
                    //保存后将页面置为查看状态
                    SetMode("VIEW");
                }
            }
            else if (strAction == "btnEdit")//根据传入的回调类型进行处理，这里响应编辑按钮
            {
                SetMode("EDIT");
            }
            else if (strAction == "btnNotSave")//根据传入的回调类型进行处理，这里响应编辑按钮
            {
                SetMode("VIEW");
            }
            //else if (strAction == "btnConfirm")//根据传入的回调类型进行处理，这里响应编辑按钮
            //{
            //    SetItemStatus(this.GetParamHtValue("CHECK_ID"), "True");
            //    this.ExecJScript("btnDo('mFinder');");
            //}
            //else if (strAction == "btnCancel")//根据传入的回调类型进行处理，这里响应编辑按钮
            //{
            //    SetItemStatus(this.GetParamHtValue("CHECK_ID"), "False");
            //    this.ExecJScript("btnDo('mFinder');");
            //}

            base.InitialByParam();
        }
        //private void SetItemStatus(string strIds, string strStatus)
        //{
        //    using (msBsc.AppLogic.DataAlc.CBizShpDrawPub objtem1 = new msBsc.AppLogic.DataAlc.CBizShpDrawPub())
        //    {
        //        DataSet ds = objtem1.SelectByIds(strIds);
        //        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        //        {
        //            if (strStatus == "True")
        //            {
        //                if (ds.Tables[0].Rows[i]["DRAW_PUB_DT"].ToString() == string.Empty)
        //                {
        //                    ds.Tables[0].Rows[i]["DRAW_PUB_DT"] = System.DateTime.Now;
        //                    ds.Tables[0].Rows[i]["DRAW_PUB_USR"] = msBsc.SvRef.UserInfo.Operator;
        //                }
        //            }
        //        }
        //        if (ds.HasChanges())
        //        {
        //            System.Transactions.TransactionOptions transactionOption = new System.Transactions.TransactionOptions();
        //            transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
        //            transactionOption.Timeout = new TimeSpan(0, 10, 0);
        //            using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, transactionOption))
        //            {
        //                objtem1.Update(ds);
        //                ds.AcceptChanges();

        //                ts.Complete();
        //                ts.Dispose(); 
        //            }
        //        }
        //    }
        //}

        //修改页面状态
        private void SetMode(string strMode)
        {
            EditMode = strMode; switch (strMode)
            {
                case "EDIT":
                    EnabledLinkBtn("btnEdit", false);
                    EnabledLinkBtn("btnSave", true);
                    EnabledLinkBtn("btnNotSave", true);
                    EnabledLinkBtn("btnConfirm", false);
                    EnabledLinkBtn("btnCancel", false);
                    this.ExecJScript("doEditGt('myGrid1');");
                    break;
                case "ADD":
                    EnabledLinkBtn("btnEdit", false);
                    EnabledLinkBtn("btnSave", true);
                    EnabledLinkBtn("btnNotSave", false);
                    EnabledLinkBtn("btnConfirm", false);
                    EnabledLinkBtn("btnCancel", false);
                    this.ExecJScript("doEditGt('myGrid1');");
                    break;
                case "VIEW":
                    EnabledLinkBtn("btnEdit", true);
                    EnabledLinkBtn("btnSave", false);
                    EnabledLinkBtn("btnNotSave", false);
                    EnabledLinkBtn("btnConfirm", true);
                    EnabledLinkBtn("btnCancel", true);
                    this.ExecJScript("doCancelGt('myGrid1');");
                    break;
            }
        }
        //获取数据原,"DP_DATA"字符一定不要改变，否则系统不能自动清除缓存
        public DataSet GetDisplayData(string strgtGridID, string strSrcF, string strsRadom)
        {
            if (strgtGridID == "myGrid1")
            {
                DataSet ds;
                if (strSrcF == "mFinder" || !this.SessionIsExists(strsRadom + "DP_DATA", "1"))//点击查询按钮时，或需要数据而没有缓存时，根据条件取出数据记录
                {
                    using (msBsc.AppLogic.DataAlc.CBizShpDrawPartake objtem1 = new msBsc.AppLogic.DataAlc.CBizShpDrawPartake())
                    {
                        ds = objtem1.DataObj.QueryBySQL("select A.*,B.PUB_NO,B.DRAW_TITLE,C.EXPIRY_DT,D.PRIZE_CLASS,D.PRIZE_NME from SHP_DRAW_PARTAKE A LEFT OUTER JOIN SHP_DRAW_PUB B ON A.DRAW_PUB_ID=B.DRAW_PUB_ID LEFT OUTER JOIN SHP_DRAW_WINNER C ON A.DRAW_PUB_ID=C.DRAW_PUB_ID AND A.WIN_NO=C.WIN_NO LEFT OUTER JOIN SHP_DRAW_PRIZE D ON C.DRAW_PRIZE_ID=D.DRAW_PRIZE_ID WHERE A.DRAW_PUB_ID='" + this.GetParamHtValue("PID") + "' AND A.USER_NME LIKE '%" + this.GetParamHtValue("USER_NME") + "%'"); 
                    }
                    ds.AcceptChanges();
                    SetSession(strsRadom + "DP_DATA", ds, "1");
                    //查询时，将页面置为查看状态
                    if (strSrcF == "mFinder")
                        SetMode("VIEW");
                }
                else
                {
                    ds = (DataSet)this.GetSession(strsRadom + "DP_DATA", "1");
                }
                return ds;
            }
            else
            {
                return null;
            }
        }
         
    }
}